package com.hnas.eCard.service;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.hnas.api.dto.DTOResult;
import com.hnas.eCard.orm.AccECard;

public interface AccECardService {
	
	AccECard saveOrUpdate(AccECard vo) throws Exception;
	/**
	 * 通过对象查找对象信息
	 * @param vo
	 * @return
	 */
	List<AccECard> findByECard(AccECard vo);
	
	
	/**
	 * 通过账户id和卡号查找对象信息
	 * @param vo
	 * @return
	 */	
	List<AccECard> searchECard(AccECard vo);
	
	/**
	 * 扫描电子卡状态为：退卡中的所有卡状态，如果有已经成功退卡的，就会刷新卡状态
	 * @param accId
	 */
	void updateECardStatus(String accId) throws Exception;
	
	/**
	 * 根据状态查询电子卡
	 * @param vo
	 * @return
	 */
	List<AccECard> searchECardByAccIdAndStatus(String accId,String status);
	
	/**
	 * 根据账户id和卡状态(可使用、已退卡)查询电子卡列表
	 * @param accId
	 * @param searchStatus
	 * @param pageNo
	 * @param pageSize
	 * @return JSONObject
	 */
	public JSONObject findECardsByStatus(String accId, String searchStatus, Integer pageNo, Integer pageSize) throws Exception;
	
	/**
	 * 赠送电子卡
	 */
	public DTOResult sendECard(DTOResult dtoResult, JSONObject jo) throws Exception;
	
	/**
	 * 领取或拒绝电子卡
	 */
	public DTOResult receiveOrRefuseECard(DTOResult dtoResult, JSONObject jo) throws Exception;
	
	/**
	 * 电子卡退卡申请
	 */
	public DTOResult backCardApply(DTOResult dtoResult, JSONObject jo) throws Exception;
	
	/**
	 * 电子卡卡号秘钥校验接口
	 */
	public DTOResult checkCardSecretKey(DTOResult dtoResult, JSONObject jo) throws Exception;
	/**
	 * 取消赠送电子卡
	 */
	public DTOResult cancelGiveECard(DTOResult dtoResult, JSONObject jo) throws Exception;
	/**
	 * 领取分享的电子卡
	 * @Title: shareReceiveECard  
	 * @Description:  
	 * @param dtoResult
	 * @param jo
	 * @return
	 * @throws
	 */
	public DTOResult shareReceiveECard(DTOResult dtoResult, JSONObject jo) throws Exception;
	
	int unbindECard(String accId, String cardNo);
	
}
